import Vue from 'vue'
import VueRouter from 'vue-router'
import login from '../views/user/login.vue'
import layout from '../views/layout.vue'
import home from '../views/home/home.vue'
import movie from '../views/movie/movie.vue'
import qa from '../views/qa/qa.vue'
import user from '../views/user/user.vue'
import not from '../views/not/not.vue'
import edit from '../views/user/edit.vue'
// import { component } from 'vue/types/umd'

Vue.use(VueRouter)

const routes =[
{
  name:'login',
  path:'/login',
  component: login
},
{
  name:'layout',
  path:'/',
  component:layout,
  children:[
    {
      name:'home',
      path:'/home',
      component:home,
    },
    {
      name:'qa',
      path:'/qa',
      component:qa,
    },
    {
      name:'movie',
      path:'/movie',
      component:movie,
    },
    {
      name:'user',
      path:'/user',
      component:user,
      // 路由元信息
      meta:{isLogin:true}
    },
    {
      name:'edit',
      path:'/edit',
      component:edit,
    },
  ]
},
  {
name:'not',
path:'/not',
component:not
  },
  {
    path:'*',
    redirect:'/not'
  },
]

const router = new VueRouter({
  routes
})

// 路由导航首位一点要在 创建路由对象的后面
// 导入token
import { getToken } from '../../utils/token.js'
// 访问的白名单, 可以直接通行
const whiteList = ['/login']
router.beforeEach((to, from, next) => {
  // 访问的路径在白名单
  // to：目标路由  要跳转到哪里
  // from 来源路由   从哪个路由跳转
  // next（） 允许正常跳转
// 路由导航守卫一定要调用next（），不调用，路由无法跳转
// next（） 不加参数， 通过检查，允许正常跳转to页面
// next（{path：‘路径’}）  检查不通过，进行拦截  跳转到指定页面
  if (to.meta.isLogin){
    // 判断用户是否登入
    if (getToken()) {
      next()
    } else {
      // 未登入，跳转登入页
      next({path:'/login'})
    }
  }else{
    next()
  }
})

export default router
